fix-gemini-extension-agent-schema. - #92
Conversation
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/a11y-architect.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/architect.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/build-error-resolver.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/chief-of-staff.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/code-architect.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/code-explorer.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/code-reviewer.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/code-simplifier.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/comment-analyzer.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/conversation-analyzer.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/cpp-build-resolver.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/cpp-reviewer.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/csharp-reviewer.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/dart-build-resolver.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/database-reviewer.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/doc-updater.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/docs-lookup.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/e2e-runner.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/flutter-reviewer.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/gan-evaluator.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/gan-generator.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/gan-planner.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/go-build-resolver.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/go-reviewer.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/harness-optimizer.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/healthcare-reviewer.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/java-build-resolver.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/java-reviewer.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/kotlin-build-resolver.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/kotlin-reviewer.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/loop-operator.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/opensource-forker.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/opensource-packager.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/opensource-sanitizer.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/performance-optimizer.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/planner.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/pr-test-analyzer.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/python-reviewer.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/pytorch-build-resolver.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/refactor-cleaner.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/rust-build-resolver.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/rust-reviewer.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/security-reviewer.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/seo-specialist.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/silent-failure-hunter.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/tdd-guide.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/type-design-analyzer.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/typescript-reviewer.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/learnship/agents/learnship-challenger.md
- converted tools scalar to array
- removed color
WalkthroughAdds 30 new Markdown agent prompt files to the repository. Each file defines a specialized AI agent with a shared "Prompt Defense Baseline," role definition, step-by-step workflow, and structured output format template. Domains covered: code review (7 languages), build error resolution (6 stacks), architecture/design, GAN harness, E2E testing, open-source release pipeline, and utility orchestration. ChangesCode Review Agents
Build Error Resolver Agents
Architecture and Design Agents
GAN Harness and E2E Testing Agents
Open-Source Release Pipeline
Utility and Orchestration Agents
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes The changes are numerous but highly repetitive in structure — every file follows the same baseline → role → workflow → output format pattern. Reviewing the pattern once covers most files; effort concentrates on verifying the specialized checklists in Possibly related PRs
Suggested labels
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 27
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
comment-analyzer.md (1)
50-58: 🧹 Nitpick | 🔵 Trivial | ⚡ Quick winRename the buckets or add explicit severities.
The section says findings should be grouped by severity, but the listed buckets are categories (
Inaccurate,Stale, etc.), so the instruction is ambiguous.Suggested fix
-Provide advisory findings grouped by severity: +Provide advisory findings grouped by category:🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@comment-analyzer.md` around lines 50 - 58, The Output Format section states that findings should be grouped by severity, but the listed buckets (Inaccurate, Stale, Incomplete, Low-value) are categories rather than severity levels. Either rename these buckets to actual severity levels (such as Critical, High, Medium, Low) if they are meant to represent severity, or change the instruction text from "grouped by severity" to "grouped by category" to accurately reflect what the buckets represent.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@a11y-architect.md`:
- Around line 41-44: The "Optimize Touch/Pointer" bullet point conflates two
different accessibility requirements by presenting the 24x24 CSS-pixel minimum
for web and the 44x44 pixel mobile guidance together without platform
distinction. Separate these into distinct guidance items that clearly specify
which requirement applies to web platforms versus mobile/touch platforms. This
ensures the agent provides the correct target-size requirement based on the
specific platform context rather than creating confusion between web and mobile
accessibility standards.
- Around line 2-3: Register the a11y-architect agent by adding
"agents/a11y-architect.md" to the agents list in .gemini-plugin/plugin.json
alongside the existing architect.md entry. Additionally, in Step 2 of the
a11y-architect.md file, clarify the target-size guidance by explicitly
distinguishing between mobile and web standards rather than conflating them;
specify that mobile platforms require 44x44 points minimum size while web
platforms require 24x24 CSS pixels minimum spacing, and align this early
guidance with the more detailed distinction already present in the ADR section.
In `@build-error-resolver.md`:
- Around line 163-180: The tsconfig paths alias example is incomplete and FIX 3
is incorrect. In the section showing path alias resolution, update FIX 1 to
include the required baseUrl compiler option alongside the paths configuration
(baseUrl should be set to "." or similar), as paths alone cannot resolve aliases
without it. Remove or replace FIX 3 entirely since npm install cannot install
path aliases like `@/lib/utils` - path aliases are configuration-based, not
package-based. Keep only the valid fixes (checking tsconfig configuration with
both baseUrl and paths, or using relative imports as FIX 2).
In `@chief-of-staff.md`:
- Around line 99-110: The relationships log is being read from two different
file paths which creates a split state. In Step 1, the process reads from
`private/relationships.md` to get sender context, but in Step 5 Post-Send
Follow-Through, the interaction is appended to `relationships.md` (without the
private/ prefix). This means newly logged interactions won't be visible to the
reply logic that consumes the private/relationships.md file. Update the Step 5
Relationships follow-through to append interactions to
`private/relationships.md` instead of `relationships.md` so all reads and writes
operate on the same file path.
- Around line 107-117: The `PostToolUse` hook is automatically pushing changes
to relationship notes and pending-response metadata, which risks leaking private
correspondence to the remote repository. Modify the `PostToolUse` hook
implementation to remove automatic pushing behavior - either keep commits local
only by removing the push step from step 7 (Git commit & push), or add an
explicit confirmation/approval requirement before any push operation occurs.
Ensure that sensitive files like relationships.md and pending-response metadata
are never automatically synced to a remote repository without user consent.
In `@comment-analyzer.md`:
- Around line 4-8: The tools list in the comment-analyzer configuration includes
run_shell_command which is unnecessary for the agent's comment analysis
functionality and unnecessarily expands the attack surface when processing
untrusted prompt input. Remove the run_shell_command tool from the tools list
since comment analysis only requires the read_file, search_file_content, and
list_directory capabilities for safely analyzing and providing feedback on code.
In `@cpp-build-resolver.md`:
- Around line 38-43: The issue is that the diagnostic commands truncate output
with head and tail which can hide relevant compiler errors, and the error
handling with || echo "...not available" incorrectly treats tool execution
failures as tool absence rather than distinguishing between tools not being
installed versus tools finding legitimate issues. Remove the head and tail
filters from the cmake and clang-tidy commands to preserve full output, and for
clang-tidy and cppcheck commands, check for tool availability separately before
execution rather than catching non-zero exit codes which occur when the tools
successfully detect problems.
In `@csharp-reviewer.md`:
- Around line 31-35: The insecure-deserialization bullet point incorrectly pairs
TypeNameHandling.All with System.Text.Json.JsonSerializer when it is actually a
Newtonsoft.Json feature. Fix this API mismatch by either clarifying that
TypeNameHandling.All applies to Newtonsoft.Json (not System.Text.Json), or by
replacing the reference with an appropriate System.Text.Json vulnerability
example such as allowing arbitrary type instantiation through the
JsonSerializerOptions.
In `@database-reviewer.md`:
- Around line 4-7: Remove the write_file tool from the tools list in the
database-reviewer configuration. The database reviewer agent should only be able
to read and analyze database changes, not write or mutate files. Keep read_file
and run_shell_command in the tools list, but delete the write_file entry to
ensure the agent remains a read-only reviewer and limits potential blast radius
from unintended mutations.
In `@doc-updater.md`:
- Around line 42-51: The sample commands in the code analysis section hard-code
src/ as the target directory, but the workflow documentation earlier instructs
discovering multiple workspace roots (apps/*, packages/*, services/*) in
monorepos. Update the three commands (npx tsx scripts/codemaps/generate.ts, npx
madge --image graph.svg src/, and npx jsdoc2md src/**/*.ts) to be
workspace-aware by making them discover and process all workspace roots instead
of hard-coding src/. This ensures the generated codemaps and documentation
include all relevant workspace directories in the monorepo structure.
In `@e2e-runner.md`:
- Around line 233-258: There is an inconsistency in the test directory naming
across the documentation. The test file organization tree uses `tests/e2e/` but
other sections reference `tests/egc-e2e/` and the playwright.config.ts testDir
is set to `./tests/egc-e2e`. Choose one canonical folder name for your test
directory and update all three locations to use it consistently: the test file
organization tree structure, any example file paths shown in the documentation,
and the testDir configuration value in playwright.config.ts. Ensure all
references point to the same directory path to avoid test discoverability
issues.
- Around line 666-689: Remove the invalid `snapshots: true` option from the
browser.startTracing() method call, keeping only the valid options of `path` and
`screenshots`. Additionally, replace the deprecated `videosPath` configuration
in the playwright.config.ts with `outputDir` in the main config section to
control artifact location, or remove it entirely to use the default
`test-results` directory that Playwright provides.
In `@gan-evaluator.md`:
- Around line 49-58: The bash commands in the initial section use invalid
Playwright syntax with `playwright navigate` and `playwright screenshot`
commands that do not exist. Replace these invalid commands with either the MCP
tool syntax using the mcp__playwright__navigate and mcp__playwright__screenshot
format with proper parameter objects, or use the standard Playwright CLI syntax
with npx playwright test. Reference the correct syntax examples that are already
documented later in the same file to ensure consistency and validity.
In `@gan-planner.md`:
- Around line 69-83: The Evaluation Criteria section has misaligned weights
where Craft is set to 0.3 and Originality is set to 0.2, which conflicts with
the design-heavy focus in workflows/gan-design.md. Update the weight values for
the Originality and Craft criteria so that Originality (novelty/uniqueness) is
scored higher than Craft (polish/animations). Ensure all weights still sum to
1.0 and reflect that design and originality are the primary evaluation drivers
rather than craft details.
In `@go-build-resolver.md`:
- Around line 42-44: The current Static analysis section for the staticcheck and
golangci-lint commands incorrectly uses the || operator to handle both missing
tools and actual lint findings, causing real diagnostic output to be suppressed
and mislabeled as missing tools. Instead, first check if each tool is available
in the system PATH using a command like which or command -v, and only echo the
"not installed" message if the tool is truly missing. If the tool is available,
run it and allow its exit code and output to display normally so that actual
linting failures are visible to users. This way, tool availability is detected
separately from the tool's exit status.
In `@harness-optimizer.md`:
- Around line 29-40: The workflow step 1 references `/egc-harness-audit` which
is Gemini-shell-specific and incompatible with the other claimed supported
platforms (Gemini CLI, Cursor, OpenCode, and Codex). Replace the
`/egc-harness-audit` command in step 1 with a reference to a repository script
or a portable wrapper function that all client types can invoke uniformly,
ensuring the audit baseline collection works consistently across Gemini CLI,
Cursor, OpenCode, and Codex.
In `@healthcare-reviewer.md`:
- Around line 65-87: The output format template for Healthcare Review only
includes three verdict states (SAFE TO DEPLOY, NEEDS FIXES, and BLOCK) but the
review rules require flagging uncertain clinical logic as NEEDS REVIEW. Add
NEEDS REVIEW as a fourth verdict option to the Verdict line in the Output Format
section so that uncertain cases can be properly classified without forcing
misclassification into existing categories.
In `@java-build-resolver.md`:
- Around line 134-136: The grep command that searches for annotation processor
configuration only checks pom.xml and build.gradle files, but projects using
Kotlin DSL (build.gradle.kts) will be missed. Update the grep command to include
build.gradle.kts in the file list being searched alongside pom.xml and
build.gradle so that all build configuration variants are verified for proper
Lombok and MapStruct annotation processor setup.
- Around line 41-42: The current approach of using logical OR to fall back to
system Maven on any exit code from the wrapper causes genuine compile errors to
be masked by attempting to rerun with different settings. Instead of the pattern
`./mvnw command || mvn command`, first check if the wrapper executable exists
using a conditional test (not a try-catch with OR). Only invoke the system Maven
as a fallback when the wrapper file is actually missing, not when the wrapper
itself reports a failure. Apply this logic to both the compile and test commands
to ensure build failures are reported with their actual context rather than
being retried with potentially different Maven/JDK configurations.
In `@kotlin-build-resolver.md`:
- Around line 94-100: Remove the `allWarningsAsErrors = true` line from the
compilerOptions block in the Kotlin build configuration. This global setting
goes beyond the minimal fix needed and can introduce unintended build failures
in repositories that do not already enforce this warning policy. Keep only the
`-Xjsr305=strict` compiler argument which directly addresses the null safety
issue being diagnosed.
In `@opensource-forker.md`:
- Around line 150-157: The cd command in the staging directory checkout is using
a literal string TARGET_DIR instead of referencing the variable. Replace cd
TARGET_DIR with cd $TARGET_DIR to properly change into the directory stored in
the TARGET_DIR variable, ensuring the subsequent git init, git add -A, and git
commit commands execute in the correct forked repository directory.
- Around line 53-56: The rsync command with `--exclude='.env*'` is too broad and
removes the `.env.example` configuration template file which should be preserved
for the fork. Instead of excluding all `.env*` files, modify the exclude pattern
to be more specific and only exclude actual secret environment files like
`.env`, `.env.local`, and `.env.*.local`, while preserving `.env.example`.
Alternatively, add a specific inclusion rule for `.env.example` before the
broader exclude pattern to ensure it is preserved during the sync.
In `@opensource-packager.md`:
- Around line 176-183: The git clone command in the Quick Start section
hardcodes a GitHub HTTPS URL format (https://github.com/{org}/{repo}.git), which
assumes the project is always hosted on GitHub. To make this host-agnostic,
replace the hardcoded GitHub URL with a variable or placeholder (such as
{repo_url} or similar) that can be substituted with the actual repository URL
regardless of which Git hosting service is used. This ensures the generated
README will work correctly for repositories hosted on GitHub, GitLab, Gitea, or
any other Git service.
In `@opensource-sanitizer.md`:
- Around line 46-48: The regex pattern for "Database URLs with credentials"
currently only matches postgres, mysql, mongodb, and redis schemes in the
alternation group but does not include the postgresql scheme variant, which
causes credentials in postgresql:// URLs to bypass the sanitizer. Add postgresql
to the alternation group within the parentheses so that both postgres:// and
postgresql:// DSNs with embedded credentials are properly detected and matched
by the pattern.
- Around line 28-30: The third bullet point's description of "read-only" is
ambiguous and incorrectly implies that no file writes occur at all, but the
pipeline actually needs the `SANITIZATION_REPORT.md` artifact. Reword the bullet
point to clarify that read-only applies specifically to source code and
configuration files, not to report generation, such as changing it to indicate
that the step generates reports without modifying source files or clarifying
that writes are limited to artifacts only.
In `@performance-optimizer.md`:
- Around line 367-403: The Web Vitals monitoring code uses the deprecated getFID
function which was removed in web-vitals v5.0; it should be replaced with getINP
(Interaction to Next Paint). Update the import statement to include getINP
instead of getFID, replace the getFID(console.log) call with
getINP(console.log), update the comment from "First Input Delay" to "Interaction
to Next Paint", and in the performance report template, replace the FID row in
the Web Vitals table with an INP row, updating the metric name, target value
(typically < 200ms), and description accordingly.
- Around line 37-57: Remove the npx bundle-analyzer and npx source-map-explorer
commands from the bundle analysis section in the performance-optimizer.md file,
keeping only the npx webpack-bundle-analyzer command to avoid confusion since
these tools serve different purposes and webpack-bundle-analyzer is the most
commonly used approach. Additionally, locate line 371 where getFID is imported
or used from the web-vitals package and replace it with getINP (Interaction to
Next Paint), as getFID was deprecated on March 12, 2024 and removed in
web-vitals v5.0.0, ensuring the code uses the current recommended API for
measuring interaction metrics.
---
Outside diff comments:
In `@comment-analyzer.md`:
- Around line 50-58: The Output Format section states that findings should be
grouped by severity, but the listed buckets (Inaccurate, Stale, Incomplete,
Low-value) are categories rather than severity levels. Either rename these
buckets to actual severity levels (such as Critical, High, Medium, Low) if they
are meant to represent severity, or change the instruction text from "grouped by
severity" to "grouped by category" to accurately reflect what the buckets
represent.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
Run ID: 822cf98d-08c5-4d48-9423-2e145f5da0ed
📒 Files selected for processing (35)
a11y-architect.mdarchitect.mdbuild-error-resolver.mdchief-of-staff.mdcode-architect.mdcode-explorer.mdcode-reviewer.mdcode-simplifier.mdcomment-analyzer.mdconversation-analyzer.mdcpp-build-resolver.mdcpp-reviewer.mdcsharp-reviewer.mddart-build-resolver.mddatabase-reviewer.mddoc-updater.mddocs-lookup.mde2e-runner.mdflutter-reviewer.mdgan-evaluator.mdgan-generator.mdgan-planner.mdgo-build-resolver.mdgo-reviewer.mdharness-optimizer.mdhealthcare-reviewer.mdjava-build-resolver.mdjava-reviewer.mdkotlin-build-resolver.mdkotlin-reviewer.mdloop-operator.mdopensource-forker.mdopensource-packager.mdopensource-sanitizer.mdperformance-optimizer.md
| name: a11y-architect | ||
| description: Accessibility Architect specializing in WCAG 2.2 compliance for Web and Native platforms. Use PROACTIVELY when designing UI components, establishing design systems, or auditing code for inclusive user experiences. |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
# Find the plugin configuration file
find . -name "plugin.json" -type fRepository: Jamkris/everything-gemini-code
Length of output: 103
🏁 Script executed:
# Find a11y-architect.md
find . -name "a11y-architect.md" -type fRepository: Jamkris/everything-gemini-code
Length of output: 121
🏁 Script executed:
# List files in common plugin/config directories
git ls-files | grep -E "(plugin|gemini)" | head -20Repository: Jamkris/everything-gemini-code
Length of output: 382
🏁 Script executed:
# Read the plugin.json to check agent registration
cat -n .gemini-plugin/plugin.jsonRepository: Jamkris/everything-gemini-code
Length of output: 1449
🏁 Script executed:
# Read the a11y-architect.md file, specifically check line 43 and context
cat -n ./a11y-architect.mdRepository: Jamkris/everything-gemini-code
Length of output: 8547
🏁 Script executed:
# Also check agents/a11y-architect.md if it's different
cat -n ./agents/a11y-architect.mdRepository: Jamkris/everything-gemini-code
Length of output: 8500
Add a11y-architect to the agent registry before shipping.
The file exists but won't be invocable until registered in .gemini-plugin/plugin.json. Add "./agents/a11y-architect.md" to the agents list (currently includes architect.md but not this agent).
Additionally, clarify the target-size guidance in Step 2: the "24x24 pixel spacing or 44x44 pixel" requirement conflates web and mobile standards without specifying which applies where. The ADR section correctly distinguishes 44x44 points for mobile and 24x24 CSS pixels for web, but this distinction should be explicit earlier in the workflow.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@a11y-architect.md` around lines 2 - 3, Register the a11y-architect agent by
adding "agents/a11y-architect.md" to the agents list in
.gemini-plugin/plugin.json alongside the existing architect.md entry.
Additionally, in Step 2 of the a11y-architect.md file, clarify the target-size
guidance by explicitly distinguishing between mobile and web standards rather
than conflating them; specify that mobile platforms require 44x44 points minimum
size while web platforms require 24x24 CSS pixels minimum spacing, and align
this early guidance with the more detailed distinction already present in the
ADR section.
| - **Apply the Accessibility Skill**: Invoke specific logic to generate semantic code. | ||
| - **Define Focus Flow**: Map out how a keyboard or screen reader user will move through the interface. | ||
| - **Optimize Touch/Pointer**: Ensure all interactive elements meet the minimum **24x24 pixel** spacing or **44x44 pixel** target size requirements. | ||
|
|
There was a problem hiding this comment.
Separate web target-size guidance from mobile touch targets.
Line 43 conflates WCAG 2.2's 24x24 CSS-pixel minimum with the 44x44 mobile guidance. That can cause the agent to give the wrong requirement depending on platform.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@a11y-architect.md` around lines 41 - 44, The "Optimize Touch/Pointer" bullet
point conflates two different accessibility requirements by presenting the 24x24
CSS-pixel minimum for web and the 44x44 pixel mobile guidance together without
platform distinction. Separate these into distinct guidance items that clearly
specify which requirement applies to web platforms versus mobile/touch
platforms. This ensures the agent provides the correct target-size requirement
based on the specific platform context rather than creating confusion between
web and mobile accessibility standards.
| // ❌ ERROR: Cannot find module '@/lib/utils' | ||
| import { formatDate } from '@/lib/utils' | ||
|
|
||
| // ✅ FIX 1: Check tsconfig paths are correct | ||
| { | ||
| "compilerOptions": { | ||
| "paths": { | ||
| "@/*": ["./src/*"] | ||
| } | ||
| } | ||
| } | ||
|
|
||
| // ✅ FIX 2: Use relative import | ||
| import { formatDate } from '../lib/utils' | ||
|
|
||
| // ✅ FIX 3: Install missing package | ||
| npm install @/lib/utils | ||
| ``` |
There was a problem hiding this comment.
Fix the alias example instead of treating it like a package.
paths alone won't resolve @/*; it also needs baseUrl. And npm install @/lib/utils`` is not a valid fix because @/ is a path alias, not an npm package. This section will send the resolver toward the wrong remedy for alias-related build errors.
♻️ Proposed fix
{
"compilerOptions": {
- "paths": {
- "`@/`*": ["./src/*"]
- }
+ "baseUrl": ".",
+ "paths": {
+ "`@/`*": ["src/*"]
+ }
}
}
@@
- npm install `@/lib/utils`
+ # Verify tsconfig path aliases or install the real package name📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| // ❌ ERROR: Cannot find module '@/lib/utils' | |
| import { formatDate } from '@/lib/utils' | |
| // ✅ FIX 1: Check tsconfig paths are correct | |
| { | |
| "compilerOptions": { | |
| "paths": { | |
| "@/*": ["./src/*"] | |
| } | |
| } | |
| } | |
| // ✅ FIX 2: Use relative import | |
| import { formatDate } from '../lib/utils' | |
| // ✅ FIX 3: Install missing package | |
| npm install @/lib/utils | |
| ``` | |
| // ❌ ERROR: Cannot find module '`@/lib/utils`' | |
| import { formatDate } from '`@/lib/utils`' | |
| // ✅ FIX 1: Check tsconfig paths are correct | |
| { | |
| "compilerOptions": { | |
| "baseUrl": ".", | |
| "paths": { | |
| "`@/`*": ["src/*"] | |
| } | |
| } | |
| } | |
| // ✅ FIX 2: Use relative import | |
| import { formatDate } from '../lib/utils' | |
| // ✅ FIX 3: Install missing package | |
| # Verify tsconfig path aliases or install the real package name |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@build-error-resolver.md` around lines 163 - 180, The tsconfig paths alias
example is incomplete and FIX 3 is incorrect. In the section showing path alias
resolution, update FIX 1 to include the required baseUrl compiler option
alongside the paths configuration (baseUrl should be set to "." or similar), as
paths alone cannot resolve aliases without it. Remove or replace FIX 3 entirely
since npm install cannot install path aliases like `@/lib/utils` - path aliases
are configuration-based, not package-based. Keep only the valid fixes (checking
tsconfig configuration with both baseUrl and paths, or using relative imports as
FIX 2).
| 1. Read `private/relationships.md` for sender context | ||
| 2. Read `SOUL.md` for tone rules | ||
| 3. Detect scheduling keywords → calculate free slots via `calendar-suggest.js` | ||
| 4. Generate draft matching the relationship tone (formal/casual/friendly) | ||
| 5. Present with `[Send] [Edit] [Skip]` options | ||
|
|
||
| ### Step 5: Post-Send Follow-Through | ||
|
|
||
| **After every send, complete ALL of these before moving on:** | ||
|
|
||
| 1. **Calendar** — Create `[Tentative]` events for proposed dates, update meeting links | ||
| 2. **Relationships** — Append interaction to sender's section in `relationships.md` |
There was a problem hiding this comment.
Keep the relationships log on one path.
private/relationships.md is the file read for context, but the follow-through step appends to relationships.md. That splits state and can drop the interaction note from the file the reply logic actually consumes.
🛠️ Proposed fix
-2. **Relationships** — Append interaction to sender's section in `relationships.md`
+2. **Relationships** — Append interaction to sender's section in `private/relationships.md`📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| 1. Read `private/relationships.md` for sender context | |
| 2. Read `SOUL.md` for tone rules | |
| 3. Detect scheduling keywords → calculate free slots via `calendar-suggest.js` | |
| 4. Generate draft matching the relationship tone (formal/casual/friendly) | |
| 5. Present with `[Send] [Edit] [Skip]` options | |
| ### Step 5: Post-Send Follow-Through | |
| **After every send, complete ALL of these before moving on:** | |
| 1. **Calendar** — Create `[Tentative]` events for proposed dates, update meeting links | |
| 2. **Relationships** — Append interaction to sender's section in `relationships.md` | |
| 1. Read `private/relationships.md` for sender context | |
| 2. Read `SOUL.md` for tone rules | |
| 3. Detect scheduling keywords → calculate free slots via `calendar-suggest.js` | |
| 4. Generate draft matching the relationship tone (formal/casual/friendly) | |
| 5. Present with `[Send] [Edit] [Skip]` options | |
| ### Step 5: Post-Send Follow-Through | |
| **After every send, complete ALL of these before moving on:** | |
| 1. **Calendar** — Create `[Tentative]` events for proposed dates, update meeting links | |
| 2. **Relationships** — Append interaction to sender's section in `private/relationships.md` |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@chief-of-staff.md` around lines 99 - 110, The relationships log is being read
from two different file paths which creates a split state. In Step 1, the
process reads from `private/relationships.md` to get sender context, but in Step
5 Post-Send Follow-Through, the interaction is appended to `relationships.md`
(without the private/ prefix). This means newly logged interactions won't be
visible to the reply logic that consumes the private/relationships.md file.
Update the Step 5 Relationships follow-through to append interactions to
`private/relationships.md` instead of `relationships.md` so all reads and writes
operate on the same file path.
| **After every send, complete ALL of these before moving on:** | ||
|
|
||
| 1. **Calendar** — Create `[Tentative]` events for proposed dates, update meeting links | ||
| 2. **Relationships** — Append interaction to sender's section in `relationships.md` | ||
| 3. **Todo** — Update upcoming events table, mark completed items | ||
| 4. **Pending responses** — Set follow-up deadlines, remove resolved items | ||
| 5. **Archive** — Remove processed message from inbox | ||
| 6. **Triage files** — Update LINE/Messenger draft status | ||
| 7. **Git commit & push** — Version-control all knowledge file changes | ||
|
|
||
| This checklist is enforced by a `PostToolUse` hook that blocks completion until all steps are done. The hook intercepts `gmail send` / `conversations_add_message` and injects the checklist as a system reminder. |
There was a problem hiding this comment.
Do not auto-push private comms state.
This checklist writes relationship notes and pending-response metadata. Automatically pushing those files can leak private correspondence to a remote repo; keep the commit local or require explicit confirmation before any push.
🔒 Recommended fix
-7. **Git commit & push** — Version-control all knowledge file changes
+7. **Git commit** — Version-control all knowledge file changes locally; require explicit confirmation before any push🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@chief-of-staff.md` around lines 107 - 117, The `PostToolUse` hook is
automatically pushing changes to relationship notes and pending-response
metadata, which risks leaking private correspondence to the remote repository.
Modify the `PostToolUse` hook implementation to remove automatic pushing
behavior - either keep commits local only by removing the push step from step 7
(Git commit & push), or add an explicit confirmation/approval requirement before
any push operation occurs. Ensure that sensitive files like relationships.md and
pending-response metadata are never automatically synced to a remote repository
without user consent.
| ## Quick Start | ||
|
|
||
| \`\`\`bash | ||
| git clone https://github.com/{org}/{repo}.git | ||
| cd {repo} | ||
| ./setup.sh | ||
| \`\`\` | ||
|
|
There was a problem hiding this comment.
Make the clone step host-agnostic.
This Quick Start block hardcodes a GitHub HTTPS URL, but this packager is supposed to work for arbitrary sanitized repos. If the project is not GitHub-hosted, the generated README will be wrong.
Fix
- git clone https://github.com/{org}/{repo}.git
- cd {repo}
+ git clone {repo_url}
+ cd {repo_name}📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| ## Quick Start | |
| \`\`\`bash | |
| git clone https://github.com/{org}/{repo}.git | |
| cd {repo} | |
| ./setup.sh | |
| \`\`\` | |
| ## Quick Start | |
| \`\`\`bash | |
| git clone {repo_url} | |
| cd {repo_name} | |
| ./setup.sh | |
| \`\`\` |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@opensource-packager.md` around lines 176 - 183, The git clone command in the
Quick Start section hardcodes a GitHub HTTPS URL format
(https://github.com/{org}/{repo}.git), which assumes the project is always
hosted on GitHub. To make this host-agnostic, replace the hardcoded GitHub URL
with a variable or placeholder (such as {repo_url} or similar) that can be
substituted with the actual repository URL regardless of which Git hosting
service is used. This ensures the generated README will work correctly for
repositories hosted on GitHub, GitLab, Gitea, or any other Git service.
| - Verify `.env.example` completeness | ||
| - Generate a detailed PASS/FAIL report | ||
| - **Read-only** — you never modify files, only report |
There was a problem hiding this comment.
Keep the report write, even though the scan is read-only.
The pipeline consumes SANITIZATION_REPORT.md after this step, so "read-only" must mean "no source changes," not "no writes at all." Reword this to allow writing the report artifact.
Fix
-- Generate a detailed PASS/FAIL report
-- **Read-only** — you never modify files, only report
++ Generate a detailed PASS/FAIL report by writing `SANITIZATION_REPORT.md`
++ **Read-only** — you never modify source files, only the report artifact📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| - Verify `.env.example` completeness | |
| - Generate a detailed PASS/FAIL report | |
| - **Read-only** — you never modify files, only report | |
| - Verify `.env.example` completeness | |
| - Generate a detailed PASS/FAIL report by writing `SANITIZATION_REPORT.md` | |
| - **Read-only** — you never modify source files, only the report artifact |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@opensource-sanitizer.md` around lines 28 - 30, The third bullet point's
description of "read-only" is ambiguous and incorrectly implies that no file
writes occur at all, but the pipeline actually needs the
`SANITIZATION_REPORT.md` artifact. Reword the bullet point to clarify that
read-only applies specifically to source code and configuration files, not to
report generation, such as changing it to indicate that the step generates
reports without modifying source files or clarifying that writes are limited to
artifacts only.
| # Database URLs with credentials | ||
| pattern: (postgres|mysql|mongodb|redis)://[^:]+:[^@]+@[^\s'"]+ | ||
|
|
There was a problem hiding this comment.
Expand the DB URL scan to cover postgresql://.
This regex misses the common postgresql://user:pass@... form, so a credential-bearing DSN can pass the sanitizer. The fork template already uses postgresql://, so this needs to match both forms.
Fix
- pattern: (postgres|mysql|mongodb|redis)://[^:]+:[^@]+@[^\s'"]+
+ pattern: (postgresql?|mysql|mongodb|redis)://[^:]+:[^@]+@[^\s'"]+📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| # Database URLs with credentials | |
| pattern: (postgres|mysql|mongodb|redis)://[^:]+:[^@]+@[^\s'"]+ | |
| # Database URLs with credentials | |
| pattern: (postgresql?|mysql|mongodb|redis)://[^:]+:[^@]+@[^\s'"]+ |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@opensource-sanitizer.md` around lines 46 - 48, The regex pattern for
"Database URLs with credentials" currently only matches postgres, mysql,
mongodb, and redis schemes in the alternation group but does not include the
postgresql scheme variant, which causes credentials in postgresql:// URLs to
bypass the sanitizer. Add postgresql to the alternation group within the
parentheses so that both postgres:// and postgresql:// DSNs with embedded
credentials are properly detected and matched by the pattern.
| ```bash | ||
| # Bundle analysis | ||
| npx bundle-analyzer | ||
| npx source-map-explorer 'build/static/js/*.js' | ||
|
|
||
| # Lighthouse performance audit | ||
| npx lighthouse https://your-app.com --view | ||
|
|
||
| # Node.js profiling | ||
| node --prof your-app.js | ||
| node --prof-process isolate-*.log | ||
|
|
||
| # Memory analysis | ||
| node --inspect your-app.js # Then use Chrome DevTools | ||
|
|
||
| # React profiling (in browser) | ||
| # React DevTools > Profiler tab | ||
|
|
||
| # Network analysis | ||
| npx webpack-bundle-analyzer | ||
| ``` |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
find . -name "performance-optimizer.md" -type fRepository: Jamkris/everything-gemini-code
Length of output: 135
🏁 Script executed:
cd "$(git rev-parse --show-toplevel 2>/dev/null || pwd)" && git ls-files | grep -i "performance-optimizer"Repository: Jamkris/everything-gemini-code
Length of output: 131
🏁 Script executed:
wc -l ./performance-optimizer.mdRepository: Jamkris/everything-gemini-code
Length of output: 105
🏁 Script executed:
sed -n '30,65p' ./performance-optimizer.mdRepository: Jamkris/everything-gemini-code
Length of output: 1037
🏁 Script executed:
sed -n '140,170p' ./performance-optimizer.mdRepository: Jamkris/everything-gemini-code
Length of output: 1005
🏁 Script executed:
rg "bundle-analyzer|webpack-bundle-analyzer|source-map-explorer" ./performance-optimizer.md -nRepository: Jamkris/everything-gemini-code
Length of output: 233
🌐 Web query:
npm bundle-analyzer package
💡 Result:
The most common and authoritative package for analyzing bundle sizes in the JavaScript ecosystem depends on your build tool, though webpack-bundle-analyzer is the most widely recognized tool for this purpose [1][2][3]. Webpack Bundle Analyzer The webpack-bundle-analyzer package is the standard tool for visualizing the content of webpack bundles [1][3]. It generates an interactive, zoomable treemap that allows you to see which modules occupy the most space in your bundle, helping you identify opportunities for code splitting, tree shaking, or dependency removal [1][4][5]. It can be used in two ways: 1. As a webpack plugin: Integrates directly into your build process to generate reports [1][4]. 2. As a CLI utility: Ingests a pre-generated webpack stats JSON file to analyze bundles without modifying your webpack configuration [1][4][3]. Installation: npm install --save-dev webpack-bundle-analyzer Other Ecosystem Tools Because different build tools require specific integrations, other packages exist for non-webpack environments: - vite-bundle-analyzer: A popular tool for Vite, Rollup, and Rolldown projects that provides similar interactive treemap visualizations [6]. - bundle-stats: A more comprehensive tool that supports multiple bundlers (webpack, Vite, Rollup, Rspack) and provides features like side-by-side build comparisons and CI integration [7]. - Bundlephobia: While not a local bundle analyzer, this web service is widely used to analyze the size impact of individual npm packages before you install them [8]. When choosing a tool, prioritize the one that directly supports your specific bundler (e.g., webpack vs. Vite) to ensure accurate analysis of your build output [6][7].
Citations:
- 1: https://www.npmjs.com/package/webpack-bundle-analyzer
- 2: https://github.com/webpack/webpack-bundle-analyzer/tree/refs/heads/main
- 3: https://rossta.net/blog/webpacker-output-analysis-with-webpack-bundle-analyzer.html
- 4: https://github.com/webpack/webpack-bundle-analyzer/blob/master/README.md
- 5: https://fidibo.github.io/blog/posts/webpack-bundle-analyzer/
- 6: https://www.npmjs.com/package/vite-bundle-analyzer
- 7: https://github.com/bundle-stats/bundle-stats
- 8: https://bundlephobia.com/
🌐 Web query:
webpack-bundle-analyzer vs source-map-explorer bundle analysis tools
💡 Result:
Both webpack-bundle-analyzer and source-map-explorer are popular tools for visualizing JavaScript bundle composition, but they differ primarily in how they gather data and their integration requirements [1][2]. webpack-bundle-analyzer is a dedicated Webpack plugin and CLI utility that parses Webpack's internal stats files [3][4]. Because it integrates directly with the Webpack build process, it offers deep insight into Webpack-specific concepts like chunks, loaders, and plugins [5][3]. It is generally preferred when you are working within a Webpack-based environment and want to visualize the build output's internal structure [2][6]. source-map-explorer is a more general-purpose tool that functions by analyzing JavaScript source maps [1][7]. It does not require Webpack; it can analyze any bundle (even those generated by Rollup, Vite, or other bundlers) provided that source maps are available [1][8]. By mapping the minified code back to the original source files, it offers a "bottom-up" view of what code is actually taking up space in the final production file [9][10]. Some developers prefer this approach because it accurately reflects the final production bundle, potentially avoiding discrepancies that can occur if Webpack's internal statistics differ from the final emitted code [10]. Key differences at a glance: - Integration: webpack-bundle-analyzer is deeply integrated with Webpack via a plugin [3][4]. source-map-explorer is a standalone CLI tool that requires only the generated JavaScript bundle and its source map file [7][8]. - Scope: webpack-bundle-analyzer is specific to Webpack [3][6]. source-map-explorer is bundler-agnostic [1]. - Perspective: webpack-bundle-analyzer shows the structure based on Webpack's dependency graph [3][6]. source-map-explorer shows the structure based on the actual contents of the emitted source maps [7][10]. - Features: Both provide interactive treemap visualizations [1][3]. webpack-bundle-analyzer offers built-in support for viewing gzip, Brotli, and Zstandard sizes [3][6]. In summary, use webpack-bundle-analyzer if you are already using Webpack and want seamless integration into your build pipeline [2][6]. Use source-map-explorer if you need a framework-agnostic tool, are debugging issues outside of Webpack, or want to verify exactly what code exists in the final production bundle [1][10].
Citations:
- 1: https://blog.hashhackers.com/blog/bundle-analysis-webpack/
- 2: https://npm-compare.com/bundlewatch,source-map-explorer,stats-webpack-plugin,webpack-bundle-analyzer,webpack-dashboard,webpack-visualizer-plugin
- 3: https://www.npmjs.com/package/webpack-bundle-analyzer
- 4: https://github.com/webpack/webpack-bundle-analyzer/tree/refs/heads/main
- 5: https://www.digitalocean.com/community/tutorials/angular-bundle-size
- 6: https://open-awesome.com/projects/webpack-bundle-analyzer
- 7: https://github.com/danvk/source-map-explorer/blob/HEAD/README.md
- 8: https://www.npmjs.com/package/source-map-explorer
- 9: https://npm-compare.com/bundle-stats,source-map-explorer,webpack-bundle-analyzer
- 10: https://dev.to/salimchemes/analyzing-angular-bundle-with-source-map-explorer-341
🌐 Web query:
bundle-analyzer npm package
💡 Result:
The term "bundle analyzer" in the npm ecosystem typically refers to one of several tools used to visualize the size and composition of bundled JavaScript files. Choosing the right one depends on your specific bundler and requirements [1][2]. Webpack Bundle Analyzer The most widely used tool for Webpack projects is webpack-bundle-analyzer [3][2]. It generates an interactive, zoomable treemap that displays the contents of your bundles, helping you identify large dependencies and opportunities for code splitting [3][4][2]. - Installation: npm install --save-dev webpack-bundle-analyzer [3][5]. - Usage: It can be used as a Webpack plugin (integrating into your build process) or as a CLI utility to analyze existing stats JSON files [3][4][6]. Rollup Plugin Visualizer For projects using Rollup, Vite (which uses Rollup), or other compatible bundlers, rollup-plugin-visualizer is the standard choice [1][2]. It offers multiple report templates, including treemaps, sunbursts, and flamegraphs [7][8][2]. - Installation: npm install --save-dev rollup-plugin-visualizer [1][2]. - Usage: Typically added as a plugin in your config file (e.g., vite.config.ts or rollup.config.js) [1][2]. Other Tools There is a separate, less common package simply named bundle-analyzer, which uses D3-based sunburst visualizations and relies on source maps rather than bundler-specific stats [9][10]. Additionally, source-map-explorer is a framework-agnostic tool that can analyze any bundle provided it has associated source maps, making it a useful alternative when bundler-specific plugins are not suitable [2]. Summary Recommendation - If using Webpack: Use webpack-bundle-analyzer [3][2]. - If using Vite or Rollup: Use rollup-plugin-visualizer [1][2]. - If you lack direct access to the build process or have a non-standard setup: Consider source-map-explorer [2].
Citations:
- 1: https://solid-web.com/javascript-bundle-analysis-find-bloat/
- 2: https://blog.hashhackers.com/blog/bundle-analysis-webpack/
- 3: https://www.npmjs.com/package/webpack-bundle-analyzer
- 4: https://github.com/webpack/webpack-bundle-analyzer/tree/refs/heads/main
- 5: https://github.com/webpack-contrib/webpack-bundle-analyzer/
- 6: https://blog.jakoblind.no/webpack-bundle-analyzer/
- 7: https://github.com/btd/rollup-plugin-visualizer?tab=readme-ov-file
- 8: https://www.npmjs.com/package/rollup-plugin-visualizer
- 9: https://www.npmjs.com/bundle-analyzer
- 10: https://github.com/lhorie/bundle-analyzer
🏁 Script executed:
rg "getFID|getFirstInputDelay" ./performance-optimizer.md -nRepository: Jamkris/everything-gemini-code
Length of output: 195
🌐 Web query:
web-vitals getFID deprecated First Input Delay 2024 2025
💡 Result:
First Input Delay (FID) was officially replaced by Interaction to Next Paint (INP) as a Core Web Vital on March 12, 2024 [1][2][3]. Following this replacement, support for FID was deprecated across Google’s performance tooling and the web-vitals JavaScript library [4][1]. Key details regarding the deprecation and transition: 1. Web Vitals Library: The onFID function was marked as deprecated in version 4.0.0 of the web-vitals library [5] and was officially removed in version 5.0.0 [6][7]. Developers are instructed to use onINP instead [5]. 2. Tooling Support: As of 2024, Chrome tools (including PageSpeed Insights, the Chrome UX Report, and the Web Vitals extension) stopped reporting FID as a core metric [4][1]. 3. Technical Differences: INP provides a more comprehensive assessment of responsiveness than FID [8][9]. While FID only measured the "input delay" (the time the main thread was blocked) of the very first user interaction [9][3], INP measures the latency of all interactions throughout the page lifecycle [10][11]. INP captures the full duration of an interaction, including the input delay, event handler processing time, and the time required to present the next frame to the user [8][11][3]. Although FID is no longer a Core Web Vital, Chromium’s underlying PerformanceObserver API still supports first-input entries, allowing developers to continue measuring it manually if necessary [4]. However, for all performance monitoring and optimization purposes, INP is the current standard [4][1].
Citations:
- 1: https://web.dev/blog/inp-cwv-launch
- 2: https://seoprocheck.com/web-vitals/inp-interaction-to-next-paint/
- 3: https://vercel.com/blog/first-input-delay-vs-interaction-to-next-paint
- 4: https://web.dev/blog/fid
- 5: https://github.com/GoogleChrome/web-vitals/blob/main/docs/upgrading-to-v4.md
- 6: https://github.com/GoogleChrome/web-vitals/blob/main/docs/upgrading-to-v5.md
- 7: https://github.com/GoogleChrome/web-vitals/blob/HEAD/CHANGELOG.md
- 8: https://statvisor.com/blog/inp-explained-core-web-vital-replaced-fid
- 9: https://web.dev/blog/inp-cwv
- 10: https://organikpi.com/blog/technical-seo/inp-core-web-vitals/
- 11: https://developer.mozilla.org/en-US/docs/Glossary/Interaction_to_next_paint
🏁 Script executed:
sed -n '365,385p' ./performance-optimizer.mdRepository: Jamkris/everything-gemini-code
Length of output: 553
Remove bundle-analyzer and source-map-explorer from the bundle analysis section; use only webpack-bundle-analyzer.
These tools are not interchangeable. webpack-bundle-analyzer is webpack-specific, source-map-explorer is bundler-agnostic (works with any bundler via source maps), and the bare bundle-analyzer package is rarely used. Pick one approach and remove the others to avoid confusion. Alternatively, document when to use each based on your bundler.
Also: Line 371 uses getFID from web-vitals, which was deprecated on March 12, 2024 and removed in web-vitals v5.0.0. Replace with getINP (Interaction to Next Paint).
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@performance-optimizer.md` around lines 37 - 57, Remove the npx
bundle-analyzer and npx source-map-explorer commands from the bundle analysis
section in the performance-optimizer.md file, keeping only the npx
webpack-bundle-analyzer command to avoid confusion since these tools serve
different purposes and webpack-bundle-analyzer is the most commonly used
approach. Additionally, locate line 371 where getFID is imported or used from
the web-vitals package and replace it with getINP (Interaction to Next Paint),
as getFID was deprecated on March 12, 2024 and removed in web-vitals v5.0.0,
ensuring the code uses the current recommended API for measuring interaction
metrics.
| ### Web Vitals Monitoring | ||
|
|
||
| ```typescript | ||
| // Track Core Web Vitals | ||
| import { getCLS, getFID, getLCP, getFCP, getTTFB } from 'web-vitals'; | ||
|
|
||
| getCLS(console.log); // Cumulative Layout Shift | ||
| getFID(console.log); // First Input Delay | ||
| getLCP(console.log); // Largest Contentful Paint | ||
| getFCP(console.log); // First Contentful Paint | ||
| getTTFB(console.log); // Time to First Byte | ||
| ``` | ||
|
|
||
| ## Performance Report Template | ||
|
|
||
| ````markdown | ||
| # Performance Audit Report | ||
|
|
||
| ## Executive Summary | ||
| - **Overall Score**: X/100 | ||
| - **Critical Issues**: X | ||
| - **Recommendations**: X | ||
|
|
||
| ## Bundle Analysis | ||
| | Metric | Current | Target | Status | | ||
| |--------|---------|--------|--------| | ||
| | Total Size (gzip) | XXX KB | < 200 KB | WARNING: | | ||
| | Main Bundle | XXX KB | < 100 KB | PASS: | | ||
| | Vendor Bundle | XXX KB | < 150 KB | WARNING: | | ||
|
|
||
| ## Web Vitals | ||
| | Metric | Current | Target | Status | | ||
| |--------|---------|--------|--------| | ||
| | LCP | X.Xs | < 2.5s | PASS: | | ||
| | FID | XXms | < 100ms | PASS: | | ||
| | CLS | X.XX | < 0.1 | WARNING: | | ||
|
|
There was a problem hiding this comment.
Replace FID with INP in the Web Vitals example and scorecard.
getFID has been removed from web-vitals since v5.0 (March 2024); FID is deprecated and replaced by INP (Interaction to Next Paint). Update the code example to use getINP instead and replace FID with INP in the performance report template.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@performance-optimizer.md` around lines 367 - 403, The Web Vitals monitoring
code uses the deprecated getFID function which was removed in web-vitals v5.0;
it should be replaced with getINP (Interaction to Next Paint). Update the import
statement to include getINP instead of getFID, replace the getFID(console.log)
call with getINP(console.log), update the comment from "First Input Delay" to
"Interaction to Next Paint", and in the performance report template, replace the
FID row in the Web Vitals table with an INP row, updating the metric name,
target value (typically < 200ms), and description accordingly.
There was a problem hiding this comment.
8 issues found across 35 files
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="opensource-forker.md">
<violation number="1" location="opensource-forker.md:151">
P1: `cd TARGET_DIR` is missing `$` variable prefix, causing the clean-history step to fail since it references a literal directory name instead of the `$TARGET_DIR` variable used elsewhere.</violation>
</file>
<file name="build-error-resolver.md">
<violation number="1" location="build-error-resolver.md:179">
P2: Incorrect remediation advice: treats a TypeScript path alias (`@/lib/utils`) as an installable npm package</violation>
</file>
<file name="opensource-sanitizer.md">
<violation number="1" location="opensource-sanitizer.md:36">
P1: Database URL secret pattern causes deterministic false positives on `.env.example` placeholder values, which Step 5 requires to exist.</violation>
<violation number="2" location="opensource-sanitizer.md:100">
P1: Windows home-directory regex only matches single-character usernames, creating false negatives in a CRITICAL scan category</violation>
</file>
<file name="e2e-runner.md">
<violation number="1" location="e2e-runner.md:140">
P2: Inconsistent test directory/file conventions in the same guide can cause generated tests and run commands to target different locations.</violation>
<violation number="2" location="e2e-runner.md:670">
P1: Trace collection example uses `browser.startTracing`/`browser.stopTracing`, a Chromium-only API with non-portable options (`screenshots`, `snapshots`), which will break on Firefox/WebKit projects documented in the same file. Should use the cross-browser `context.tracing.start/stop` API instead.</violation>
</file>
<file name="csharp-reviewer.md">
<violation number="1" location="csharp-reviewer.md:34">
P1: Insecure deserialization guidance conflates serializer APIs: `TypeNameHandling.All` is a Newtonsoft.Json-only setting, but the bullet pairs it with the bare name `JsonSerializer`, which in modern .NET usually means `System.Text.Json.JsonSerializer`. This is ambiguous and can mislead reviewers.</violation>
</file>
<file name="go-reviewer.md">
<violation number="1" location="go-reviewer.md:32">
P1: Path traversal "Good" example is incomplete: it does not reject absolute paths, so `filepath.Join(baseDir, "/etc/passwd")` still resolves outside `baseDir`.</violation>
</file>
Tip: cubic can generate docs of your entire codebase and keep them up to date. Try it here.
Re-trigger cubic
| ### Step 6: Clean Git History | ||
|
|
||
| ```bash | ||
| cd TARGET_DIR |
There was a problem hiding this comment.
P1: cd TARGET_DIR is missing $ variable prefix, causing the clean-history step to fail since it references a literal directory name instead of the $TARGET_DIR variable used elsewhere.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At opensource-forker.md, line 151:
<comment>`cd TARGET_DIR` is missing `$` variable prefix, causing the clean-history step to fail since it references a literal directory name instead of the `$TARGET_DIR` variable used elsewhere.</comment>
<file context>
@@ -0,0 +1,212 @@
+### Step 6: Clean Git History
+
+```bash
+cd TARGET_DIR
+git init
+git add -A
</file context>
| cd TARGET_DIR | |
| +cd "$TARGET_DIR" |
|
|
||
| ### Step 1: Secrets Scan (CRITICAL — any match = FAIL) | ||
|
|
||
| Scan every text file (excluding `node_modules`, `.git`, `__pycache__`, `*.min.js`, binaries): |
There was a problem hiding this comment.
P1: Database URL secret pattern causes deterministic false positives on .env.example placeholder values, which Step 5 requires to exist.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At opensource-sanitizer.md, line 36:
<comment>Database URL secret pattern causes deterministic false positives on `.env.example` placeholder values, which Step 5 requires to exist.</comment>
<file context>
@@ -0,0 +1,200 @@
+
+### Step 1: Secrets Scan (CRITICAL — any match = FAIL)
+
+Scan every text file (excluding `node_modules`, `.git`, `__pycache__`, `*.min.js`, binaries):
+
+```
</file context>
| # Absolute paths to specific user home directories | ||
| pattern: /home/[a-z][a-z0-9_-]*/ (anything other than /home/user/) | ||
| pattern: /Users/[A-Za-z][A-Za-z0-9_-]*/ (macOS home directories) | ||
| pattern: C:\\Users\\[A-Za-z] (Windows home directories) |
There was a problem hiding this comment.
P1: Windows home-directory regex only matches single-character usernames, creating false negatives in a CRITICAL scan category
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At opensource-sanitizer.md, line 100:
<comment>Windows home-directory regex only matches single-character usernames, creating false negatives in a CRITICAL scan category</comment>
<file context>
@@ -0,0 +1,200 @@
+# Absolute paths to specific user home directories
+pattern: /home/[a-z][a-z0-9_-]*/ (anything other than /home/user/)
+pattern: /Users/[A-Za-z][A-Za-z0-9_-]*/ (macOS home directories)
+pattern: C:\\Users\\[A-Za-z] (Windows home directories)
+severity: CRITICAL
+
</file context>
|
|
||
| ```typescript | ||
| // Start trace | ||
| await browser.startTracing(page, { |
There was a problem hiding this comment.
P1: Trace collection example uses browser.startTracing/browser.stopTracing, a Chromium-only API with non-portable options (screenshots, snapshots), which will break on Firefox/WebKit projects documented in the same file. Should use the cross-browser context.tracing.start/stop API instead.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At e2e-runner.md, line 670:
<comment>Trace collection example uses `browser.startTracing`/`browser.stopTracing`, a Chromium-only API with non-portable options (`screenshots`, `snapshots`), which will break on Firefox/WebKit projects documented in the same file. Should use the cross-browser `context.tracing.start/stop` API instead.</comment>
<file context>
@@ -0,0 +1,832 @@
+
+```typescript
+// Start trace
+await browser.startTracing(page, {
+ path: 'artifacts/trace.json',
+ screenshots: true,
</file context>
| - **SQL Injection**: String concatenation/interpolation in queries — use parameterized queries or EF Core | ||
| - **Command Injection**: Unvalidated input in `Process.Start` — validate and sanitize | ||
| - **Path Traversal**: User-controlled file paths — use `Path.GetFullPath` + prefix check | ||
| - **Insecure Deserialization**: `BinaryFormatter`, `JsonSerializer` with `TypeNameHandling.All` |
There was a problem hiding this comment.
P1: Insecure deserialization guidance conflates serializer APIs: TypeNameHandling.All is a Newtonsoft.Json-only setting, but the bullet pairs it with the bare name JsonSerializer, which in modern .NET usually means System.Text.Json.JsonSerializer. This is ambiguous and can mislead reviewers.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At csharp-reviewer.md, line 34:
<comment>Insecure deserialization guidance conflates serializer APIs: `TypeNameHandling.All` is a Newtonsoft.Json-only setting, but the bullet pairs it with the bare name `JsonSerializer`, which in modern .NET usually means `System.Text.Json.JsonSerializer`. This is ambiguous and can mislead reviewers.</comment>
<file context>
@@ -0,0 +1,113 @@
+- **SQL Injection**: String concatenation/interpolation in queries — use parameterized queries or EF Core
+- **Command Injection**: Unvalidated input in `Process.Start` — validate and sanitize
+- **Path Traversal**: User-controlled file paths — use `Path.GetFullPath` + prefix check
+- **Insecure Deserialization**: `BinaryFormatter`, `JsonSerializer` with `TypeNameHandling.All`
+- **Hardcoded secrets**: API keys, connection strings in source — use configuration/secret manager
+- **CSRF/XSS**: Missing `[ValidateAntiForgeryToken]`, unencoded output in Razor
</file context>
| ```go | ||
| // Bad | ||
| db.Query("SELECT * FROM users WHERE id = " + userID) | ||
| // Good |
There was a problem hiding this comment.
P1: Path traversal "Good" example is incomplete: it does not reject absolute paths, so filepath.Join(baseDir, "/etc/passwd") still resolves outside baseDir.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At go-reviewer.md, line 32:
<comment>Path traversal "Good" example is incomplete: it does not reject absolute paths, so `filepath.Join(baseDir, "/etc/passwd")` still resolves outside `baseDir`.</comment>
<file context>
@@ -0,0 +1,277 @@
+ ```go
+ // Bad
+ db.Query("SELECT * FROM users WHERE id = " + userID)
+ // Good
+ db.Query("SELECT * FROM users WHERE id = $1", userID)
+ ```
</file context>
| import { formatDate } from '../lib/utils' | ||
|
|
||
| // ✅ FIX 3: Install missing package | ||
| npm install @/lib/utils |
There was a problem hiding this comment.
P2: Incorrect remediation advice: treats a TypeScript path alias (@/lib/utils) as an installable npm package
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At build-error-resolver.md, line 179:
<comment>Incorrect remediation advice: treats a TypeScript path alias (`@/lib/utils`) as an installable npm package</comment>
<file context>
@@ -0,0 +1,567 @@
+import { formatDate } from '../lib/utils'
+
+// ✅ FIX 3: Install missing package
+npm install @/lib/utils
+```
+
</file context>
| @@ -0,0 +1,832 @@ | |||
| --- | |||
There was a problem hiding this comment.
P2: Inconsistent test directory/file conventions in the same guide can cause generated tests and run commands to target different locations.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At e2e-runner.md, line 140:
<comment>Inconsistent test directory/file conventions in the same guide can cause generated tests and run commands to target different locations.</comment>
<file context>
@@ -0,0 +1,832 @@
+npx playwright test
+
+# Run specific test file
+npx playwright test tests/markets.spec.ts
+
+# Run tests in headed mode (see browser)
</file context>
|
Thanks for putting this together. Unfortunately we're going to close this PR. A few blocking issues:
Because of (1) and (2) there isn't a partial fix that recovers value without rewriting the PR. If you're hitting a real parsing problem in the installed extension, please open an issue with the exact CLI version, the file contents that fail to parse, and the error message, and we can dig in from there. |
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/a11y-architect.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/architect.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/build-error-resolver.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/chief-of-staff.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/code-architect.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/code-explorer.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/code-reviewer.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/code-simplifier.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/comment-analyzer.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/conversation-analyzer.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/cpp-build-resolver.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/cpp-reviewer.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/csharp-reviewer.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/dart-build-resolver.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/database-reviewer.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/doc-updater.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/docs-lookup.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/e2e-runner.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/flutter-reviewer.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/gan-evaluator.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/gan-generator.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/gan-planner.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/go-build-resolver.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/go-reviewer.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/harness-optimizer.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/healthcare-reviewer.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/java-build-resolver.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/java-reviewer.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/kotlin-build-resolver.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/kotlin-reviewer.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/loop-operator.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/opensource-forker.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/opensource-packager.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/opensource-sanitizer.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/performance-optimizer.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/planner.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/pr-test-analyzer.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/python-reviewer.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/pytorch-build-resolver.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/refactor-cleaner.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/rust-build-resolver.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/rust-reviewer.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/security-reviewer.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/seo-specialist.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/silent-failure-hunter.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/tdd-guide.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/type-design-analyzer.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/everything-gemini-code/agents/typescript-reviewer.md
- converted tools scalar to array
[FIXED] /home/zeazdev/.gemini/extensions/learnship/agents/learnship-challenger.md
- converted tools scalar to array
- removed color
Summary
Type
Test plan
npm run lintcleannpm testpassesnode scripts/ci/validate-agents.jspasses (if touchingagents/)node scripts/ci/validate-commands.jspasses (if touchingcommands/)Related
Summary by cubic
Update Gemini agent definitions to the current schema by converting
toolsto YAML arrays and removing a deprecated field. This resolves validation failures and prevents CLI parse errors.Bug Fixes
toolsscalars to arrays acrossextensions/everything-gemini-code/agents/*.colorfromextensions/learnship/agents/learnship-challenger.md.Migration
tools: <string>totools: [<string>, ...].Written for commit c1769ac. Summary will update on new commits.
Summary by CodeRabbit